package top.bfylu.adapter.iterenum;

import java.util.Enumeration;
import java.util.Iterator;

/**
 * 包名: top.bfylu.adapter.iterenum
 * 创建时间: 2022/2/14
 *
 * @author bfy
 * @version 1.0.0
 * <p>
 * 描述: 编写一个Enumeratorlterator适配器
 * @Email bfyjian@gmail.com
 **/
//因为我们将枚举适配成迭代器，适配器需要实现迭代器接口...。适配器必须看起来就像是一个迭代器
public class EnumerationIterator implements Iterator<Object> {

    Enumeration enumeration;

    //我们利用组合的方式，将枚举结合进入适配器中，所以用一个实例变量记录枚举
    public EnumerationIterator(Enumeration enumeration) {
        this.enumeration = enumeration;
    }

    //迭代器hasNext()方法其实是委托给枚举的hasMoreElements()方法...。
    @Override
    public boolean hasNext() {
        return enumeration.hasMoreElements();
    }

    //而迭代器的next()方法其实是委托给枚举的nextElement()方法。
    @Override
    public Object next() {
        return enumeration.nextElement();
    }

    //枚举不支持删除，枚举是一个“只读”接口。所以适配器也无法实现一个有实际功能的remove().
    public void remove() {
        throw new UnsupportedOperationException();
    }


}
